﻿//#define _CRT_SECURE_NO_WARNINGS 1
//#include <vector>
//#include <iostream>
//#include <queue>
//
//using namespace std;
//
//int dx[4] = { 0, 0, 1, -1 };
//int dy[4] = { 1, -1, 0, 0 };
//bool vis[101][101] = { false };
//
//int nearestExit(vector<vector<char>>& maze, vector<int>& entrance) {
//    int m = maze.size(); // 横坐标
//    int n = maze[0].size(); // 纵坐标
//    int step = 0; // 记录结果
//
//    queue<pair<int, int>> q;
//    q.push({ entrance[0],entrance[1] }); // 起始位置进队列
//    vis[entrance[0]][entrance[1]] = true;  // 起始位置标记为true
//
//    while (!q.empty())
//    {
//        step++;
//        int sz = q.size();
//        for (int i = 0; i < sz; i++)
//        {
//            auto result = q.front();
//            q.pop();
//            for (int i = 0; i < 4; i++)
//            {
//                int x = result.first + dx[i];
//                int y = result.second + dy[i];
//                // 判断是否已经到达出口
//                cout << (maze[x][y] == '.') << endl;
//                if (maze[x][y] == '.' && x == 0 )
//                {
//                    return step;
//                }
//                    
//
//                if (x >= 0 && x < m && y >= 0 && y < n && maze[x][y] == '.' && !vis[x][y])
//                {
//
//                    vis[x][y] = true;
//                    q.push({ x,y });
//                }
//            }
//        }
//    }
//    return -1;
//}
//
//int main()
//{
//    vector<vector<char>> maze = {
//        {'+', '+', '.', '+'},
//        {'.', '.', '.', '+'},
//        {'+', '+', '+', '.'}
//    };
//    vector<int> entrance = { 1, 2 };
//    nearestExit(maze, entrance);
//    return 0;
//}
//
//class Solution {
//    int dx[4] = { 0, 0, 1, -1 };
//    int dy[4] = { 1, -1, 0, 0 };
//public:
//    vector<vector<int>> highestPeak(vector<vector<int>>& isWater) {
//        int m = isWater.size();
//        int n = isWater[0].size();
//        vector<vector<int>> height(m, vector<int>(n, -1));
//
//        queue<pair<int, int>> q;
//        // 把所有的源点加入到队列里面
//        for (int i = 0; i < m; i++)
//            for (int j = 0; j < n; j++)
//                if (isWater[i][j] == 1)
//                {
//                    height[i][j] = 0;
//                    q.push({ i,j });
//                }
//        // 多源bfs
//        while (q.size())
//        {
//            auto [a, b] = q.front();
//            q.pop();
//            for (int i = 0; i < 4; i++)
//            {
//                int x = a + dx[i];
//                int y = b + dy[i];
//                // 该值没有被搜索过
//                if (x >= 0 && x < m && y >= 0 && y < n && height[x][y] == -1)
//                {
//                    height[x][y] = height[a][b] + 1;
//                    q.push({ x, y });
//                }
//            }
//        }
//
//        return height;
//    }
//};
//
//
//
